package cn.tyz.kotlin.ui

import cn.tyz.kotlin.model.MovieList
import cn.tyz.kotlin.net.VolleySingletion
import com.android.volley.Response
import com.google.gson.Gson

/**
 * @author : tianyingzhong
 * @ClassName: MoveActivity
 * @Description:  一个类继承父类和实现接口的方式; class 类名 :超类名（）,接口名
 * @time 2017/8/23 19:42
 */
class  MoveActivity : android.support.v7.app.AppCompatActivity() {

    lateinit var recyclerView: android.support.v7.widget.RecyclerView
    lateinit var progressDialog: android.app.ProgressDialog

    /**
     * override用于覆写继承父类或者实现接口中方法。
     *
     * fun 用于标识方法
     *
     * 参数形式： 参数名： 类型
     *
     *  ? 是用于指定可以为空对象
     *
     */
    override fun onCreate(savedInstanceState: android.os.Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(cn.tyz.kotlin.R.layout.acitivity_move)

        showLoading()
        this.initView()
        this.sendRequest()

    }

    /**
     * 初始化控件
     */
    fun initView() {
        recyclerView = this.findViewById(cn.tyz.kotlin.R.id.main_recycler_view) as android.support.v7.widget.RecyclerView
    }

    /**
     *  将网络数据加载到RecyclerView
     */
    fun loadData(movieList: List<cn.tyz.kotlin.model.MovieList.Movie>) {
        recyclerView.layoutManager = android.support.v7.widget.LinearLayoutManager(this)
        recyclerView.adapter = cn.tyz.kotlin.adapter.ImageListAdapter(movieList)
    }

    /**
     * 显示dialog
     */
    fun showLoading() {
        progressDialog = android.app.ProgressDialog(this)
        progressDialog.show()
    }

    /**
     * 取消dialog
     */
    fun dismissLoading() {
        progressDialog.dismiss()
    }

    /**
     * Toast显示
     */

    fun loadToast(content: String?) {
        android.widget.Toast.makeText(this, content, android.widget.Toast.LENGTH_SHORT).show()
    }

    /**
     * 发送请求,这里使用douban公开的搜索电影的API
     */
    fun sendRequest() {
        var url = "https://api.douban.com/v2/movie/search?q=张艺谋"
        val request = com.android.volley.toolbox.StringRequest(url, Response.Listener<String> {
            response ->
            //请求成功，Gson解析json
            var movilist = Gson().fromJson(response, MovieList::class.java)
            loadData(movilist.subjects)
            dismissLoading()

        }, Response.ErrorListener {
            error ->

            loadToast(error.message)
            dismissLoading()
        })
        // 单利类中对象的引用，利用volley发送请求
        VolleySingletion.requestQueque.add(request)
    }
}